#!/usr/bin/python
#-*- coding: utf-8 -*-

import unittest 
import homography

class MeinTest(unittest.TestCase):
    """Testklasse die die Funktion homography.sort_vertices testet"""

    def setUp(self):
        """Eckpunkte eines Trapez"""
        self.top = [(44, 358), (794, 357), (635, 243), (217, 239)] # oben schmal
        self.left = [(152, 227), (386, 116), (427, 435), (152, 334)] # links schmal
        self.right = [(198, 139), (519, 249), (528, 408), (197, 462)]# rechts schmal
        self.bottom = [(658, 215), (172, 210), (252, 417), (548, 415)]# unten schmal


    def testLeft(self):
        """Testet ob ein Trapez (links schmal) korrekte Vertex reihenfolge Ergibt"""
        vertices = homography.sort_vertices(self.left)

        self.assertEqual(vertices[0], (152, 227)) # OL
        self.assertEqual(vertices[1], (386, 116)) # OR
        self.assertEqual(vertices[2], (427, 435)) # UR
        self.assertEqual(vertices[3], (152, 334))  # UL


    def testRight(self):
        """Testet ob ein Trapez (rechts schmal) korrekte Vertex reihenfolge Ergibt"""
        vertices = homography.sort_vertices(self.right)
        print 'Vertices', vertices

        self.assertEqual(vertices[0], (198, 139)) # OL
        self.assertEqual(vertices[1], (519, 249)) # OR
        self.assertEqual(vertices[2], (528, 408)) # UR
        self.assertEqual(vertices[3], (197, 462))  # UL


    def testTop(self):
        """Testet ob ein Trapez (oben schmal) korrekte Vertex reihenfolge Ergibt"""
        vertices = homography.sort_vertices(self.top)
        print 'Vertices', vertices
        
        self.assertEqual(vertices[0], (217, 239)) # OL
        self.assertEqual(vertices[1], (635, 243)) # OR
        self.assertEqual(vertices[2], (794, 357)) # UR
        self.assertEqual(vertices[3], (44, 358))  # UL


    def testBottom(self):
        """Testet ob ein Trapez (oben schmal) korrekte Vertex reihenfolge Ergibt"""
        vertices = homography.sort_vertices(self.bottom)

        self.assertEqual(vertices[0], (172, 210)) # OL
        self.assertEqual(vertices[1], (658, 215)) # OR
        self.assertEqual(vertices[2], (548, 415)) # UR
        self.assertEqual(vertices[3], (252, 417)) # UL

if __name__ == "__main__":
    for a in [e for e  in dir(unittest.TestCase) if 'assert' in e]:
        print a
    unittest.main()
